﻿//using System;
//using System.Collections;
//using System.Collections.Generic;
//using System.Text;

//namespace WhatCatch.Core
//{
//    public class DataContainer_Hash1Lock: DataContainerBase
//    {
//        object obj = new object();

//        //List<string> listUrl;
//        //List<string> detailUrl;
//        //Dictionary<string, int> dictListUrl;
//        //Dictionary<string, int> dictDetailUrl;
//        Hashtable hashListUrl;
//        Hashtable hashDetailUrl;

//        //List Dictionary Hashtable 在数量为1w时体现不出来区别
//        //Dictionary 在用lock和ConcurrentDictionary中体现不出来区别。至少不用lock，在list.Any()判断时可能会发生异常

//        /// <summary>
//        /// 任务队列
//        /// </summary>
//        Queue<string> queueTask;

//        public DataContainer_Hash1Lock()
//        {
//            //listUrl = new List<string>();
//            //detailUrl = new List<string>();
//            //dictListUrl = new Dictionary<string, int>();
//            //dictDetailUrl = new Dictionary<string, int>();
//            hashListUrl = new Hashtable();
//            hashDetailUrl = new Hashtable();

//            queueTask = new Queue<string>();
//        }

//        public bool IsExistInListUrl(string url)
//        {
//            //跳过重复
//            lock (obj)
//            {
//                //if (listUrl.Any(c => c == url))
//                //    return true;
//                if (hashListUrl.ContainsKey(url))
//                    return true;
//            }
//            return false;
//        }

//        public void AddListUrl(string url)
//        {
//            lock (obj)
//            {
//                //listUrl.Add(url);
//                hashListUrl.Add(url, 0);
//            }
//        }

//        public bool IsExistInDetailUrl(string url)
//        {
//            lock (obj)
//            {
//                //if (detailUrl.Any(c => c == url))
//                //    return true;
//                if (hashDetailUrl.ContainsKey(url))
//                    return true;
//            }
//            return false;
//        }

//        public void AddDetailUrl(string url)
//        {
//            lock (obj)
//            {
//                //detailUrl.Add(url);
//                hashDetailUrl.Add(url, 0);
//            }
//        }

//        public void EnqueueTask(string url)
//        {
//            lock (obj)
//            {
//                queueTask.Enqueue(url);
//            }
//        }

//        public string GetOneTask()
//        {
//            string url = "";
//            lock (obj)
//            {
//                if (queueTask.TryDequeue(out url) == false)
//                {
//                    return null;
//                }
//            }
//            return url;
//        }
//    }
//}
